home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / share / gdm / guest-session / guest-session-setup.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2009-10-15  |  2KB  |  82 lines

  1. #!/bin/sh -e
  2. # (C) 2008 Canonical Ltd.
  3. # Author: Martin Pitt <martin.pitt@ubuntu.com>
  4. # License: GPL v2 or later
  5. # modified by David D Lowe and Thomas Detoux
  6. #
  7. # Setup user and temporary home directory for guest session.
  8. # If this succeeds, this script needs to print the username as last line to
  9. # stdout.
  10.  
  11. USER=guest
  12.  
  13. # if $USER already exists, it must be a locked system account with no existing
  14. # home directory
  15. if PWSTAT=`passwd -S "$USER"` 2>/dev/null; then
  16.     if [ "`echo \"$PWSTAT\" | cut -f2 -d\ `" != "L" ]; then
  17.         echo "User account $USER already exists and is not locked"
  18.         exit 1
  19.     fi
  20.     PWENT=`getent passwd "$USER"` || {
  21.         echo "getent passwd $USER failed"
  22.         exit 1
  23.     }
  24.     GUEST_UID=`echo "$PWENT" | cut -f3 -d:`
  25.     if [ "$GUEST_UID" -ge 500 ]; then
  26.         echo "Account $USER is not a system user"
  27.         exit 1
  28.     fi
  29.     HOME=`echo "$PWENT" | cut -f6 -d:`
  30.     if [ "$HOME" != / ] && [ "${HOME#/tmp}" = "$HOME" ] && [ -d "$HOME" ]; then
  31.         echo "Home directory of $USER already exists"
  32.         exit 1
  33.     fi
  34. else
  35.     # does not exist, so create it
  36.     adduser --system --no-create-home --home / --gecos "Guest" --group --shell /bin/bash $USER || {
  37.         umount "$HOME"
  38.         rm -rf "$HOME"
  39.         exit 1
  40.     }
  41. fi
  42.  
  43. # create temporary home directory
  44. HOME=`mktemp -td guest-home.XXXXXX`
  45. mount -t tmpfs -o mode=700 none "$HOME" || { rm -rf "$HOME"; exit 1; }
  46. chown $USER:$USER "$HOME"
  47. cp -rT /etc/skel/ "$HOME"
  48. chown -R $USER:$USER "$HOME"
  49. usermod -d "$HOME" "$USER"
  50.  
  51. #
  52. # setup session
  53. #
  54.  
  55. # disable screensaver, to avoid locking guest out of itself (no password)
  56. su $USER <<EOF
  57. gconftool-2 --set --type bool /desktop/gnome/lockdown/disable_lock_screen True
  58. EOF
  59.  
  60. # disable some services that are unnecessary for the guest session
  61. mkdir --parents "$HOME"/.config/autostart
  62. cd /etc/xdg/autostart/
  63. services="jockey-gtk.desktop update-notifier.desktop user-dirs-update-gtk.desktop"
  64. for service in $services
  65. do
  66.     if [ -e /etc/xdg/autostart/"$service" ] ; then
  67.         cp "$service" "$HOME"/.config/autostart
  68.         echo "X-GNOME-Autostart-enabled=false" >> "$HOME"/.config/autostart/"$service"
  69.     fi
  70. done
  71.  
  72. chown -R $USER:$USER "$HOME"
  73.  
  74. # force restricted guest session (dmrc file owned by root)
  75. mkdir --parents /var/cache/gdm/"$USER"
  76. /bin/echo -e '[Desktop]\nSession=guest-restricted' > /var/cache/gdm/"$USER"/dmrc
  77.  
  78. echo #TODO: bug workaround, gdm expects to find a newline
  79.  
  80. # report user name to gdm
  81. echo "$USER"
  82.